package com.service.impl;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.dao.XinlizixunshiDao;
import com.dao.ZixunshiyuyueDao;
import com.entity.XinlizixunshiEntity;
import com.entity.ZixunshiyuyueEntity;
import com.entity.view.ZixunshiyuyueView;
import com.entity.view.Zixunshiyuyuexialaxuan;
import com.entity.vo.ZixunshiyuyueVO;
import com.service.ZixunshiyuyueService;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service("zixunshiyuyueService")
public class ZixunshiyuyueServiceImpl extends ServiceImpl<ZixunshiyuyueDao, ZixunshiyuyueEntity> implements ZixunshiyuyueService {

    @Autowired
    private XinlizixunshiDao xinlizixunshiDao;

    @Override

    public PageUtils queryPage(Map<String, Object> params) {
        Page<ZixunshiyuyueEntity> page = this.selectPage(
                new Query<ZixunshiyuyueEntity>(params).getPage(),
                new EntityWrapper<ZixunshiyuyueEntity>()
        );
        return new PageUtils(page);
    }

    @Override
    public PageUtils queryPage(Map<String, Object> params, Wrapper<ZixunshiyuyueEntity> wrapper) {
        Page<ZixunshiyuyueView> page = new Query<ZixunshiyuyueView>(params).getPage();
        List<ZixunshiyuyueView> zixunshiyuyueViews = baseMapper.selectListView(page, wrapper);
        for (ZixunshiyuyueView zixunshiyuyueView : zixunshiyuyueViews) {
            String zixunshizhanghao = zixunshiyuyueView.getZixunshizhanghao();
            XinlizixunshiEntity entity = new XinlizixunshiEntity();
            entity.setZixunshizhanghao(zixunshizhanghao);
            XinlizixunshiEntity entity1 = xinlizixunshiDao.selectOne(entity);
            zixunshiyuyueView.setZixunshixingming(entity1.getZixunshixingming());
        }
        page.setRecords(zixunshiyuyueViews);

        PageUtils pageUtil = new PageUtils(page);
        return pageUtil;
    }

    @Override
    public PageUtils pageyonghu(Map<String, Object> params, Wrapper<ZixunshiyuyueEntity> wrapper) {
        Page<ZixunshiyuyueView> page = new Query<ZixunshiyuyueView>(params).getPage();
        List<ZixunshiyuyueView> zixunshiyuyueViews = baseMapper.pageyonghu(page, wrapper);
        for (ZixunshiyuyueView zixunshiyuyueView : zixunshiyuyueViews) {
            String zixunshizhanghao = zixunshiyuyueView.getZixunshizhanghao();
            XinlizixunshiEntity entity = new XinlizixunshiEntity();
            entity.setZixunshizhanghao(zixunshizhanghao);
            XinlizixunshiEntity entity1 = xinlizixunshiDao.selectOne(entity);
            if (entity1 != null) {
                zixunshiyuyueView.setZixunshixingming(entity1.getZixunshixingming());

            }
            List<Zixunshiyuyuexialaxuan> list = baseMapper.selectZixunshiyuyuexialaxuan(zixunshiyuyueView.getId());
            zixunshiyuyueView.setList(list);
        }
        page.setRecords(zixunshiyuyueViews);

        PageUtils pageUtil = new PageUtils(page);
        return pageUtil;
    }

    @Override
    public Integer yuyue(ZixunshiyuyueView zixunshiyuyue) {
        baseMapper.yuyue(zixunshiyuyue);
        return null;
    }

    @Override
    public List<ZixunshiyuyueVO> selectListVO(Wrapper<ZixunshiyuyueEntity> wrapper) {
        return baseMapper.selectListVO(wrapper);
    }

    @Override
    public ZixunshiyuyueVO selectVO(Wrapper<ZixunshiyuyueEntity> wrapper) {
        return baseMapper.selectVO(wrapper);
    }

    @Override
    public List<ZixunshiyuyueView> selectListView(Wrapper<ZixunshiyuyueEntity> wrapper) {
        List<ZixunshiyuyueView> zixunshiyuyueViews = baseMapper.selectListView(wrapper);
        for (ZixunshiyuyueView zixunshiyuyueView : zixunshiyuyueViews) {
            String zixunshizhanghao = zixunshiyuyueView.getZixunshizhanghao();
            XinlizixunshiEntity entity = new XinlizixunshiEntity();
            entity.setZixunshizhanghao(zixunshizhanghao);
            XinlizixunshiEntity entity1 = xinlizixunshiDao.selectOne(entity);
            zixunshiyuyueView.setZixunshixingming(entity1.getZixunshixingming());
        }
        return zixunshiyuyueViews;
    }

    @Override
    public ZixunshiyuyueView selectView(Wrapper<ZixunshiyuyueEntity> wrapper) {
        return baseMapper.selectView(wrapper);
    }

}
